// 对 axios的二次封装
// 主要是使用它的 请求拦截器 和 响应拦截器
import axios from 'axios'
// import nprogress from 'nprogress' // 进度条
import 'nprogress/nprogress.css' // 引进进度条样式
// import store from '@/store'

// enum MSGS{
//     "操作成功" = 200,
//     "密码错误",
//     "账号错误",
//     "请求异常"
// }

const requests = axios.create({
  // headers: {
  //     'Content-Type': 'application/json'
  // },
//   http://127.0.0.1:4523/m1/1261428-0-default/moddle
  baseURL: 'http://127.0.0.1:4523/m1/1261428-0-default',
  timeout: 5000 // 代表请求超过当前时间，没有相应就结束
})

// 请求拦截器 发送请求前
requests.interceptors.request.use((config) => {
  // nprogress.start() //进度条开始
  // config 配置对象，对象里面有一个属性很重要，headers请求头
  // if (localStorage.getItem('TOKEN')) { //判断本地存储是否存在uuid_token。此时不要验证vuex里面的数据，因为一刷新，vuex的数据就会消失
  //     // 存在，就给请求头 添加一个字段(userToken)：这个字段名是事先后端定好的
  //     // console.log(store.state.user.token);
  //     config.headers.userToken = store.state.user.token
  // }
  // contentType: 'application/json;charset=UTF-8'
  config.headers = config.headers || {}
  if (localStorage.getItem('token')) {
    config.headers.token = localStorage.getItem('token') || ''
  }
  //   nprogress.start()
  return config
})

// 响应拦截器  返回成功和失败的数据，进行回调
// requests.interceptors.response.use((res) => {
//   if (error && error.response) {
//     switch (error.response.status) {
//       case 400:
//         error.message = '400--表示请求报文存在语法错误'
//         break
//       case 401:
//         error.message = '401-未经许可，需要通过HTTP认证'
//         break
//       case 500:
//         error.message = '500-表示请求服务器在执行请求时发生了错误'
//         break
//       default:
//         error.message = `连接服务器${error.response.status}`
//     }
//   } else {
//     error.message = '连接服务器失败'
//   }
//   return Promise.reject(error)
// }, (err) => {
//   // 服务器相应失败的汇报函数
//   // 可以中止promise
//   // return Promise.reject(new Error('faile'))
//   return err
// })

export default requests
